package com.jyhs.maven.controller;


import com.alibaba.fastjson.JSON;
import com.jyhs.maven.entity.Menu;
import com.jyhs.maven.entity.dto.ApiResult;
import com.jyhs.maven.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

//@Controller
@RestController  // @RestController注解相当于@Controller和@ResponseBody注解的结合
public class MenuRestController {
    @Autowired
    MenuService menuService;
    @GetMapping("/menu")
//    @ResponseBody
    public String getMenuList() {
        System.out.println("查询菜单:");
        return JSON.toJSONString(menuService.selectAll());
    }

    @GetMapping("/menu/{id}")
//    @ResponseBody
    public String getMenu(@PathVariable("id") Integer id) {
        System.out.println("查询菜单:"+id);
        return "menu";
    }

    @PostMapping("/menu")
//    @ResponseBody
    public ApiResult addMenu(@Valid Menu menu) {
        System.out.println("新增菜单"+menu);
        return new ApiResult(200,"新增成功",menuService.insert(menu));
    }

    @PutMapping("/menu/{id}")
//    @ResponseBody
    public ApiResult updateMenu(@RequestBody @Valid Menu menu) {

//        if(bindingResult.hasErrors()){
//
//            //遍历这些校验失败的信息
//            Map<String,String> map=new HashMap<>();
//            System.out.println(bindingResult.getFieldErrors());
//            bindingResult.getFieldErrors().forEach(item->{
//                //获取错误信息
//                String defaultMessage = item.getDefaultMessage();
//                //获取被校验的字段
//                String filed= item.getField();
//                map.put(filed,defaultMessage);
//
//            });
//
//            return new ApiResult(201,map.toString(),null);
//        }

        //参数校验？？     title长度不超过10个字符，icon长度不超过20个字符。？？？？？

//        if(menu.getTitle().length()>10){
//            return new ApiResult(201,"title长度不超过10个字符",null);
//        }
//        if(menu.getIcon().length()>20){
//           return new ApiResult(201,"icon长度不超过20个字符",null);
//        }

        System.out.println("更新菜单"+menu);
        return new ApiResult(200,"更新成功",menuService.update(menu));
    }

    @DeleteMapping("/menu/{id}")
//    @ResponseBody
    public int deleteMenu(@PathVariable("id") Long id) {
        System.out.println("删除菜单"+id);
        return menuService.delete(id);
    }


    @PostMapping("/menu/uploadImage")
    public ApiResult uploadImage(@RequestParam("file") MultipartFile file) throws IOException {
        System.out.println("上传图片"+file);
        System.out.println("文件名：" + file.getOriginalFilename());
        System.out.println("文件大小：" + file.getSize());
        System.out.println("文件类型：" + file.getContentType());
        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        String fileName = System.currentTimeMillis() + suffix;
        // 保存文件 保存到本地，返回保存后的路径
        file.transferTo(new File("D:/image/" + fileName));
        return new ApiResult(200,"上传成功","http://192.168.1.87:8082/image/"+fileName);
    }




}
